package com.sicau.basedemo.util;

import com.sicau.basedemo.entity.po.User;

public class UserContext {

    /**
     * 使用 ThreadLocal 缓存用户上下文信息
     */
    private static final ThreadLocal<User> USER_THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 放数据
     * @param loginUser 当前登录的用户
     */
    public static void put(User loginUser){
        USER_THREAD_LOCAL.set(loginUser);
    }

    /**
     * 拿数据
     * @return 当前登录的用户
     */
    public static User get(){
        User loginUser = USER_THREAD_LOCAL.get();
        if (loginUser == null || loginUser.getId() == null){
            throw new RuntimeException("用户未登录");
        }
        return loginUser;
    }

    /**
     * 每一次使用完之后必须调用remove方法，不然会内存泄露！！！！
     */
    public static void remove(){
        USER_THREAD_LOCAL.remove();
    }


}
